/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ClasesBase;

import java.util.LinkedList;

/**
 *
 * @author Francisco
 */
public class Jugador {

    private String nickname;
    private String pieza;
    private int resultadoInicialDados;
    private int posicionDeJuego;
    private int posicionTablero;
    private int dinero;
    private boolean migliore;
    private boolean bancarrota;
    private int cantTiroCarcel;
    private boolean salgaCarcelArca;
    private boolean salgaCarcelSuerte;
    private boolean enSubasta;// Para saber si el jugador esta participando de una subasta o si declino.
    private boolean realizandoAccion;
    private int ultimaOferta;//Para mantener la ultima oferta de cada jugador.
    LinkedList<Integer> propiedades;
    LinkedList<Integer> propiedadesHipotecadasPorBancarrota;

    public Jugador() {
    }

    public Jugador(String nickname, String pieza) {
        this.nickname = nickname;
        this.pieza = pieza;
        this.posicionTablero = 0;
        this.propiedades = new LinkedList<>();
        this.propiedadesHipotecadasPorBancarrota = new LinkedList<>();
        this.cantTiroCarcel = 0;
        this.salgaCarcelArca = false;
        this.salgaCarcelSuerte = false;
        this.enSubasta = true;
        this.realizandoAccion = false;
        ultimaOferta = 0;
        this.dinero = 1500;
        this.bancarrota = false;
    }

    public boolean isRealizandoAccion() {
        return realizandoAccion;
    }

    public void setRealizandoAccion(boolean realizandoAccion) {
        this.realizandoAccion = realizandoAccion;
    }

    public LinkedList<Integer> getPropiedadesHipotecadasPorBancarrota() {
        return propiedadesHipotecadasPorBancarrota;
    }

    public void setPropiedadesHipotecadasPorBancarrota(LinkedList<Integer> propiedadesHipotecadasPorBancarrota) {
        this.propiedadesHipotecadasPorBancarrota = propiedadesHipotecadasPorBancarrota;
    }
    
    public void agregarPropiedadHipotecadaPorBancarrota(Integer integer){
        this.propiedadesHipotecadasPorBancarrota.add(integer);
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getPieza() {
        return pieza;
    }

    public void setPieza(String pieza) {
        this.pieza = pieza;
    }

    public int getResultadoInicialDados() {
        return resultadoInicialDados;
    }

    public void setResultadoInicialDados(int resultadoInicialDados) {
        this.resultadoInicialDados = resultadoInicialDados;
    }

    public int getCantTiroCarcel() {
        return cantTiroCarcel;
    }

    public void setCantTiroCarcel(int cantTiroCarcel) {
        this.cantTiroCarcel = cantTiroCarcel;
    }

    public boolean isBancarrota() {
        return bancarrota;
    }

    public void setBancarrota(boolean bancarrota) {
        this.bancarrota = bancarrota;
    }

    public int getPosicionDeJuego() {
        return posicionDeJuego;
    }

    public void setPosicionDeJuego(int posicionDeJuego) {
        this.posicionDeJuego = posicionDeJuego;
    }

    public boolean isMigliore() {
        return migliore;
    }

    public void setMigliore(boolean migliore) {
        this.migliore = migliore;
    }

    public void moverPosicionTablero(int posicionTablero) {
        this.posicionTablero += posicionTablero;
        if (this.posicionTablero >= 40) {
            this.posicionTablero -= 40;
        }
    }

    /**
     * @return the posicionTablero
     */
    public int getPosicionTablero() {
        return posicionTablero;
    }

    /**
     * @param posicionTablero the posicionTablero to set
     */
    public void setPosicionTablero(int posicionTablero) {
        this.posicionTablero = posicionTablero;
    }

    public boolean isSalgaCarcelArca() {
        return this.salgaCarcelArca;
    }

    public void setSalgaCarcelArca(boolean salgaCarcelArca) {
        this.salgaCarcelArca = salgaCarcelArca;
    }

    public void cambiarSalgaCarcelArca() {
        this.salgaCarcelArca = !this.salgaCarcelArca;
    }

    public void cambiarSalgaCarcelSuerte() {
        this.salgaCarcelSuerte = !this.salgaCarcelSuerte;
    }

    public boolean isSalgaCarcelSuerte() {
        return this.salgaCarcelSuerte;
    }

    public void setSalgaCarcelSuerte(boolean salgaCarcelSuerte) {
        this.salgaCarcelSuerte = salgaCarcelSuerte;
    }

    /**
     * @return the dinero
     */
    public int getDinero() {
        return dinero;
    }

    /**
     * @param dinero the dinero to set
     */
    public void setDinero(int dinero) {
        this.dinero = dinero;
    }

    public void aumentarDinero(int dinero) {
        this.dinero += dinero;
    }

    public void disminuirDinero(int dinero) {
        this.dinero -= dinero;
    }

    public int moverAFerrocarrilCercano() {
        if (posicionTablero > 35 || posicionTablero < 5) {
            posicionTablero = 5;
            return posicionTablero;
        }
        if (posicionTablero > 5 && posicionTablero < 15) {
            posicionTablero = 15;
            return posicionTablero;
        }
        if (posicionTablero > 15 && posicionTablero < 25) {
            posicionTablero = 25;
            return posicionTablero;
        }
        if (posicionTablero > 25 && posicionTablero < 35) {
            posicionTablero = 35;
            return posicionTablero;
        }
        return -1;
    }

    public int moverAUtilidadCercana() {
        if (posicionTablero > 12 && posicionTablero < 28) {
            posicionTablero = 28;
            return posicionTablero;
        } else {
            posicionTablero = 12;
            return posicionTablero;
        }
    }

    public LinkedList<Integer> getPropiedades() {
        return propiedades;
    }

    public void setPropiedades(LinkedList<Integer> propiedades) {
        this.propiedades = propiedades;
    }

    public void agregarPropiedad(Integer idProp) {
        this.propiedades.add(idProp);
    }
    
    public void eliminarPropiedad(Integer idProp){
        this.propiedades.remove(idProp);
    }

    public void agregarPropiedades(LinkedList<Integer> propiedades) {
        this.propiedades.addAll(propiedades);
    }

    public boolean isEnSubasta() {
        return enSubasta;
    }

    public void setEnSubasta(boolean enSubasta) {
        this.enSubasta = enSubasta;
    }

    public int getUltimaOferta() {
        return ultimaOferta;
    }

    public void setUltimaOferta(int ultimaOferta) {
        this.ultimaOferta = ultimaOferta;
    }
}
